Graphical user interface for programming neurostimulation pulse patterns

ABSTRACT

An example of a neurostimulation system may include a storage device, a programming control circuit, and a graphical user interface (GUI). The storage device may be configured to store individually definable waveforms. The programming control circuit may be configured to generate stimulation parameters controlling the delivery of the neurostimulation pulses according to a pattern. The GUI may be configured to define the pattern using one or more waveforms selected from the individually definable waveforms. The GUI may display waveform tags each selectable for access to a waveform of the individually definable waveforms, and display a waveform builder in response to selection of one of the waveform tags. The waveform builder may present a graphical representation of the accessed waveform and allow for the accessed waveform to be adjusted by editing the graphical representation of the accessed waveform on the GUI.

CLAIM OF PRIORITY

This application is a continuation of U.S. application Ser. No.15/670,328, filed Aug. 7, 2017, which is a continuation of U.S.application Ser. No. 14/853,589, filed Sep. 14, 2015, now issued as U.S.Pat. No. 9,737,717, which claims the benefit of priority under 35 U.S.C.§ 119(e) of U.S. Provisional Patent Application Ser. No. 62/050,505,filed on Sep. 15, 2014, all of which are herein incorporated byreference in their entirety.

TECHNICAL FIELD

This document relates generally to neurostimulation and moreparticularly to a programming method and apparatus using a graphicaluser interface that allows a user to customize various patterns andwaveforms of neurostimulation pulses.

BACKGROUND

Neurostimulation, also referred to as neuromodulation, has been proposedas a therapy for a number of conditions. Examples of neurostimulationinclude Spinal Cord Stimulation (SCS), Deep Brain Stimulation (DBS),Peripheral Nerve Stimulation (PNS), and Functional ElectricalStimulation (FES). Implantable neurostimulation systems have beenapplied to deliver such a therapy. An implantable neurostimulationsystem may include an implantable neurostimulator, also referred to asan implantable pulse generator (IPG), and one or more implantable leadseach including one or more electrodes. The implantable neurostimulatordelivers neurostimulation energy through one or more electrodes placedon or near a target site in the nervous system. An external programmingdevice is used to program the implantable neurostimulator withstimulation parameters controlling the delivery of the neurostimulationenergy.

In one example, the neurostimulation energy is delivered in the form ofelectrical neurostimulation pulses. The delivery is controlled usingstimulation parameters that specify spatial (where to stimulate),temporal (when to stimulate), and informational (patterns of pulsesdirecting the nervous system to respond as desired) aspects of a patternof neurostimulation pulses. Many current neurostimulation systems areprogrammed to deliver periodic pulses with one or a few uniformwaveforms continuously or in bursts. However, the human nervous systemsuse neural signals having much more sophisticated patterns tocommunicate various types of information, including sensations of pain,pressure, temperature, etc. The nervous system may interpret anartificial stimulation with a simple pattern of stimuli as an unnaturalphenomenon, and respond with an unintended and undesirable sensationand/or movement. For example, some neurostimulation therapies are knownto cause paresthesia and/or vibration of non-targeted tissue or organ.

Recent research has shown that the efficacy and efficiency of certainneurostimulation therapies can be improved, and their side-effects canbe reduced, by using patterns of neurostimulation pulses that emulatenatural patterns of neural signals observed in the human body. Whilemodern electronics can accommodate the need for generating suchsophisticated pulse patterns, the capability of a neurostimulationsystem depends on its post-manufacturing programmability to a greatextent. For example, a sophisticated pulse pattern may only benefit apatient when it is customized for that patient, and waveform patternspredetermined at the time of manufacturing may substantially limit thepotential for the customization. In various applications, thecustomization may require pulse-by-pulse programmability and make theprogramming of the complete pulse pattern a challenging task. As such atask may be performed at least in part by a user such as a physician orother caregiver with the patient in a clinical setting, there is a needfor an intuitive, user-friendly method and system for programming theneurostimulation pulse pattern.

SUMMARY

An example (e.g. “Example 1”) of a system for deliveringneurostimulation pulses through a plurality of electrodes may include astorage device, a programming control circuit, and a graphical userinterface (GUI). The storage device may be configured to store aplurality of individually definable waveforms. The programming controlcircuit may be configured to generate a plurality of stimulationparameters controlling the delivery of the neurostimulation pulsesaccording to a pattern of the neurostimulation pulses. The GUI iscoupled to the storage device and the control circuit, and may beconfigured to define the pattern of the neurostimulation pulses usingone or more waveforms selected from the plurality of individuallydefinable waveforms. The GUI may be further configured to displaywaveform tags each selectable for access to a waveform of the pluralityof individually definable waveforms, and display a waveform builder inresponse to selection of a waveform tag of the waveform tags. Thewaveform builder may be configured to present a graphical representationof the accessed waveform and allow for the accessed waveform to beadjusted by editing the graphical representation of the accessedwaveform on the GUI.

In Example 2, the subject matter of Example 1 may optionally beconfigured such that the waveform tags include one or more waveformaddition tags each selectable for adding a new waveform to the pluralityof individually definable waveforms, and the waveform builder displayedin response to selection of a waveform addition tag of the one or morewaveform addition tags allows for creation and editing of a graphicalrepresentation of the new waveform on the GUI.

In Example 3, the subject matter of any one or any combination ofExamples 1 and 2 may optionally be configured such that the GUI isconfigured to display the graphical representation of the accessedwaveform by visually indicating parameters defining the accessedwaveform and allow user modification of one or more parameters of thevisually indicated parameters defining the accessed waveform.

In Example 4, the subject matter of any one or any combination ofExamples 1-3 may optionally be configured such that the GUI includes atouchscreen and is configured to display the graphical representation ofthe accessed waveform on the touchscreen and allow for the accessedwaveform to be adjusted by editing the graphical representation on thetouchscreen.

In Example 5, the subject matter of any one or any combination ofExamples 1-4 may optionally be configured such that the GUI isconfigured to organize the stored plurality of individually definablewaveforms into a hierarchical structure including a plurality of levels,and allow each waveform of each level of the plurality of levels toinclude one or more waveforms of one or more lower levels.

In Example 6, the subject matter of Example 5 may optionally beconfigured such that the GUI is configured to organize the storedplurality of individually definable waveforms into a nested hierarchicalstructure including a first level including one or more basic waveforms,a second level including one or more waveform groups each including oneor more basic waveforms selected from the first level, and a third levelincluding one or more groups of waveform groups each including one ormore waveform groups selected from the second level.

In Example 7, the subject matter Example 6 may optionally be configuredsuch that the one or more basic waveforms include one or more pulses ofthe neurostimulation pulses, the one or more pulses each being definedby a set of pulse parameters.

In Example 8, the subject matter of any one or any combination ofExamples 6 and 7 may optionally be configured such that the storagedevice is further configured to store a plurality of individuallydefinable fields each defined by one or more electrodes of the pluralityof electrodes through which the pulse of a basic waveform of the one ormore basic waveform is delivered. The GUI is further configured todisplay field tags each selectable for access to a field of theplurality of individually definable fields, and display a field builderin response to selection of a field tag of the field tags. The fieldbuilder is configured to present a graphical representation of theaccessed field and allow for the accessed field to be adjusted byediting the graphical representation of the accessed field on the GUI.The field tags include one or more field addition tags each selectablefor adding a new field to the plurality of individually definablewaveforms. The field builder is displayed in response to selection of afield addition tag of the one or more field addition tags to allow forcreation and editing of a graphical representation of the new field onthe GUI.

In Example 9, the subject matter of any one or any combination ofExamples 7 and 8 may optionally be configured such that the one or morewaveform groups comprise one or more pulse groups (PGs) each beingdefined by a set of PG parameters specifying the one or more pulsesselected from the stored one or more pulses and the timing of each pulseof the specified one or more pulses.

In Example 10, the subject matter of Example 9 may optionally beconfigured such that the one or more groups of waveform groups includeone or more groups of pulse groups (GPGs) each defined by a set of GPGparameters specifying the one or more PGs selected from the stored oneor more PGs and timing of each PG of the specified one or more PGs.

In Example 11, the subject matter of any one or any combination ofExamples 5-10 may optionally be configured such that the GUI includes aplurality of display modes and a display mode input configured toreceive selection of a display mode from the plurality of display modes,the display modes each specifying a level of detail to be displayed foreach level of the hierarchical structure.

In Example 12, the subject matter of any one or any combination ofExamples 1-11 may optionally be configured to further include aprogrammer and an implantable neurostimulator. The programmer includesthe storage device, the control circuit, and the GUI. The implantableneurostimulator may be configured to be coupled to the plurality ofelectrodes and communicatively coupled to the programmer. Theimplantable neurostimulator includes a stimulation output circuit toproduce and deliver each of the neurostimulation pulses through a set ofelectrodes selected from the plurality of electrodes and a stimulationcontrol circuit to control the delivery of the neurostimulation pulsesusing the plurality of stimulation parameters specifying a pattern ofthe neurostimulation pulses.

In Example 13, the subject matter of any one or any combination ofExamples 1-12 may optionally be configured such that the programmingcontrol circuit is configured to check the plurality of stimulationparameters against constraints of safety rules.

In Example 14, the subject matter of any one or any combination ofExamples 1-13 may optionally be configured such that the GUI isconfigured to allow for export of a waveform of the plurality ofindividually definable waveforms from the system.

In Example 15, the subject matter of any one or any combination ofExamples 1-14 may optionally be configured such that the GUI isconfigured to allow for import of a waveform into the system to be addedto the plurality of individually definable waveforms.

An example of a method (e.g., “Example 16”) for deliveringneurostimulation pulses through a plurality of electrodes is alsoprovided. The method includes storing a plurality of individuallydefinable waveforms; defining a pattern of the neurostimulation pulsesusing a GUI, the pattern of the neurostimulation pulses including one ormore waveforms selected from the stored plurality of individuallydefinable waveforms; displaying waveform tags using the GUI, thewaveform tags each selectable for access to a waveform of the pluralityof individually definable waveforms; receiving from a user a selectionof a waveform tag of the displayed waveform tags, the selected waveformtag associated with the accessed waveform; displaying a graphicalrepresentation of the accessed waveform using the GUI; and allowing forthe accessed waveform to be adjusted by the user editing the graphicalrepresentation of the accessed waveform on the GUI.

In Example 17, the subject matter of Example 16 may optionally furtherinclude exporting a waveform of the plurality of individually definablewaveforms for sharing with one or more other users.

In Example 18, the subject matter of any one or any combination ofExamples 16 and 17 may optionally further include importing a waveformfrom another user to be added to the plurality of individually definablewaveforms.

In Example 19, the subject matter of the waveform tags as found in anyone or any combination of Examples 16-18 may optionally further includeone or more waveform addition tags each selectable for adding a newwaveform to the plurality of individually definable waveforms, and thesubject matter of any one or any combination of Examples 16-18 mayfurther include allowing the user to create and edit a graphicalrepresentation of the new waveform on the GUI.

In Example 20, the subject matter of displaying the graphicalrepresentation of the accessed waveform as found in any one or anycombination of Examples 16-19 may optionally further include visuallyindicating parameters defining the accessed waveform on a touchscreen ofthe GUI, and the subject matter of allowing for the accessed waveform tobe adjusted as found in any one or any combination of Examples 16-19 mayoptionally further include allowing for adjustment of one or moreparameters of the parameters defining the accessed waveform by the userusing the touchscreen.

In Example 21, the subject matter of any one or any combination ofExamples 16-20 may further include organizing the stored plurality ofindividually definable waveforms into a hierarchical structure includinga plurality of levels, and allowing each waveform of each level of theplurality of levels to include one or more waveforms of one or morelower levels.

In Example 22, the subject matter of storing the plurality ofindividually definable waveforms as found in Example 21 may optionallyinclude storing one or more pulses of the neurostimulation pulses, theone or more pulses each being defined by a set of pulse parameters,storing one or more pulse groups (PGs) each being defined by a set of PGparameters specifying the one or more pulses selected from the storedone or more pulses and the timing of each pulse of the specified one ormore pulses, and storing one or more groups of pulse groups (GPGs) eachdefined by a set of GPG parameters specifying the one or more PGsselected from the stored one or more PGs and timing of each PG of thespecified one or more PGs.

In example 23, the subject matter of any one or any combination ofExamples 16-22 may optionally further include storing a plurality ofindividually definable fields each defined by one or more electrodesselected from the plurality of electrodes and assigned to a pulse of thestored one or more pulses to be delivered through the one or moreelectrodes, displaying field tags using the GUI, the field tags eachselectable for access to a field of the plurality of individuallydefinable fields, receiving from the user a selection of a field tag ofthe displayed field tags, the selected field tag associated with theaccessed field, displaying a graphical representation of the accessedfield using the GUI, and allowing for the accessed field to be adjustedby the user editing the graphical representation of the accessed fieldon the GUI.

In Example 24, the subject matter of any one or any combination ofExamples 16-23 may optionally further include transmitting the pluralityof stimulation parameters to an implantable neurostimulator, deliveringthe neurostimulation pulses from the implantable neurostimulator, andcontrolling the delivery of the neurostimulation pulses using theplurality of stimulation parameters transmitted to the implantableneurostimulator.

In Example 25, the subject matter of Example 24 may optionally furtherinclude checking the plurality of stimulation parameters againstconstraints of safety rules before transmitting the plurality ofstimulation parameters to the implantable neurostimulator.

This Summary is an overview of some of the teachings of the presentapplication and not intended to be an exclusive or exhaustive treatmentof the present subject matter. Further details about the present subjectmatter are found in the detailed description and appended claims. Otheraspects of the disclosure will be apparent to persons skilled in the artupon reading and understanding the following detailed description andviewing the drawings that form a part thereof, each of which are not tobe taken in a limiting sense. The scope of the present disclosure isdefined by the appended claims and their legal equivalents.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings illustrate generally, by way of example, variousembodiments discussed in the present document. The drawings are forillustrative purposes only and may not be to scale.

FIG. 1 illustrates an embodiment of a neurostimulation system.

FIG. 2 illustrates an embodiment of a stimulation device and a leadsystem, such as may be implemented in the neurostimulation system ofFIG. 1.

FIG. 3 illustrates an embodiment of a programming device, such as may beimplemented in the neurostimulation system of FIG. 1.

FIG. 4 illustrates an implantable neurostimulation system and portionsof an environment in which the system may be used.

FIG. 5 illustrates an embodiment of an implantable stimulator and one ormore leads of an implantable neurostimulation system, such as theimplantable system of FIG. 4.

FIG. 6 illustrates an embodiment of an external programmer of animplantable neurostimulation system, such as the external system of FIG.4.

FIG. 7 is an illustration of an embodiment of waveforms ofneurostimulation organized in a hierarchical structure.

FIG. 8 illustrates a more specific embodiment of the waveforms of FIG.7.

FIG. 9 illustrates an embodiment of a neurostimulation pulse.

FIG. 10 illustrates an embodiment of a pulse group (PG).

FIGS. 11A and 11B each illustrate an embodiment of a group of pulsegroups (GPG).

FIG. 12 illustrates an embodiment of a pattern of stimulation pulses.

FIG. 13 illustrates an embodiment of a method for controlling deliveryof neurostimulation pulses.

FIG. 14 illustrates an embodiment of a method for waveform building.

FIG. 15 is an illustration of an embodiment of a screen of a graphicaluser interface (GUI) for building a field.

FIG. 16 illustrates an embodiment of the screen for building a pulse.

FIG. 17 further illustrates the embodiment of the screen for buildingthe pulse.

FIG. 18 illustrates an embodiment of the screen for building a PG.

FIG. 19 further illustrates the embodiment of the screen for buildingthe PG.

FIG. 20 illustrates embodiment of the screen for building a GPG.

FIG. 21 illustrates an embodiment of a screen of a GUI allowing foraccess to pulses, PGs, and GPGs.

FIG. 22 illustrates an embodiment of a screen of a GUI allowing foraccess to pulses, PGs, and GPGs.

FIG. 23 illustrates an embodiment of a screen of a GUI allowing foraccess to pulses, PGs, and GPGs.

DETAILED DESCRIPTION

In the following detailed description, reference is made to theaccompanying drawings which form a part hereof, and in which is shown byway of illustration specific embodiments in which the invention may bepracticed. These embodiments are described in sufficient detail toenable those skilled in the art to practice the invention, and it is tobe understood that the embodiments may be combined, or that otherembodiments may be utilized and that structural, logical and electricalchanges may be made without departing from the spirit and scope of thepresent invention. References to “an”, “one”, or “various” embodimentsin this disclosure are not necessarily to the same embodiment, and suchreferences contemplate more than one embodiment. The following detaileddescription provides examples, and the scope of the present invention isdefined by the appended claims and their legal equivalents.

This document discusses a method and system for programmingneurostimulation pulse patterns using a graphical user interface (GUI).Advancements in neuroscience and neurostimulation research have led to ademand for using complex and/or individually optimized patterns ofneurostimulation pulses for various types of therapies. The capabilityof a neurostimulation system in treating various types of disorders willbe limited by the programmability of such patterns of neurostimulationpulses. In various embodiments, the present system allows for customdefinition of a pattern of neurostimulation pulses, which includescustom definition of waveforms being the building blocks of the patternSuch custom definition is achieved by using a GUI that makes it possiblefor the user to perform the custom definition of potentially verycomplex patterns of neurostimulation pulses by creating and editinggraphical representations of relatively simple individual buildingblocks for each of the patterns. In various embodiments, theindividually definable waveforms may include pulses, pulse groups eachincluding different pulses each timed in a sequence with controllableduty cycle, and groups of pulse groups each including different pulsegroups each timed in a sequence with controllable duty cycle. In variousembodiments, the present system provides for patterns ofneurostimulation pulses not limited to waveforms predefined at the timeof manufacturing, thereby accommodating need for customization ofneurostimulation pulse patterns as well as need for new types ofneurostimulation pulse patterns that may, for example, result fromfuture research in neurostimulation. This may also facilitate design ofa general-purpose neurostimulation device that can be configured by auser for delivering specific types of neurostimulation therapies byprogramming the device using the GUI.

FIG. 1 illustrates an embodiment of a neurostimulation system 100.System 100 includes electrodes 106, a stimulation device 104, and aprogramming device 102. Electrodes 106 are configured to be placed on ornear one or more neural targets in a patient. Stimulation device 104 isconfigured to be electrically connected to electrodes 106 and deliverneurostimulation energy, such as in the form of electrical pulses, tothe one or more neural targets through electrodes 106. The delivery ofthe neurostimulation is controlled by using a plurality of stimulationparameters, such as stimulation parameters specifying a pattern of theelectrical pulses and a selection of electrodes through which each ofthe electrical pulses is delivered. In various embodiments, at leastsome parameters of the plurality of stimulation parameters areprogrammable by a user, such as a physician or other caregiver whotreats the patient using system 100. Programming device 102 provides theuser with accessibility to the user-programmable parameters. In variousembodiments, programming device 102 is configured to be communicativelycoupled to stimulation device via a wired or wireless link.

In various embodiments, programming device 102 includes a graphical userinterface (GUI) that allows the user to set and/or adjust values of theuser-programmable parameters by creating and/or editing graphicalrepresentations of various waveforms. Such waveforms may include, forexample, the waveform of a pattern of neurostimulation pulses to bedelivered to the patient as well as individual waveforms that are usedas building blocks of the pattern of neurostimulation pulses. Examplesof such individual waveforms include pulses, pulse groups, and groups ofpulse groups, as further discussed below. The user may also be allowedto define an electrode selection specific to each individually definedwaveform.

FIG. 2 illustrates an embodiment of a stimulation device 204 and a leadsystem 208, such as may be implemented in neurostimulation system 100.Stimulation device 204 represents an embodiment of stimulation device104 and includes a stimulation output circuit 212 and a stimulationcontrol circuit 214. Stimulation output circuit 212 produces anddelivers neurostimulation pulses. Stimulation control circuit 214controls the delivery of the neurostimulation pulses using the pluralityof stimulation parameters, which specifies a pattern of theneurostimulation pulses. Lead system 208 includes one or more leads eachconfigured to be electrically connected to stimulation device 204 and aplurality of electrodes 206 distributed in the one or more leads. Theplurality of electrodes 206 includes electrode 206-1, electrode 206-2, .. . electrode 206-N, each a single electrically conductive contactproviding for an electrical interface between stimulation output circuit212 and tissue of the patient, where N≥2. The neurostimulation pulsesare each delivered from stimulation output circuit 212 through a set ofelectrodes selected from electrodes 206. In various embodiments, theneurostimulation pulses may include one or more individually definedpulses, and the set of electrodes may be individually definable by theuser for each of the individually defined pulses.

In various embodiments, the number of leads and the number of electrodeson each lead depend on, for example, the distribution of target(s) ofthe neurostimulation and the need for controlling the distribution ofelectric field at each target. In various embodiments, which areillustrated in each of FIGS. 15-23 as examples for discussion ofprogramming through the GUI, lead system includes 2 leads each having 8electrodes.

FIG. 3 illustrates an embodiment of a programming device 302, such asmay be implemented in neurostimulation system 100. Programming device302 represents an embodiment of programming device 102 and includes astorage device 318, a programming control circuit 316, and a GUI 310.Storage device 318 stores a plurality of individually definablewaveforms. Programming control circuit 316 generates the plurality ofstimulation parameters that controls the delivery of theneurostimulation pulses according to the pattern of the neurostimulationpulses. GUI 310 represents an embodiment of GUI 110 and allows the userto define the pattern of the neurostimulation pulses using one or morewaveforms selected from the plurality of individually definablewaveforms. In various embodiments, GUI 310 is configured to displaywaveform tags each selectable for access to a waveform of the pluralityof individually definable waveforms, and configured to display awaveform builder in response to selection of a waveform tag of thewaveform tags. The waveform builder is configured to present a graphicalrepresentation of the accessed waveform and allow for the accessedwaveform to be adjusted by editing the graphical representation of theaccessed waveform using GUI 310.

In the illustrated embodiment, GUI 310 includes a touchscreen 320 toallow the user to edit the graphical representation of the accessedwaveform using a finger or stylet. In various embodiments, GUI 310includes any type of presentation device, such as interactive ornon-interactive screens, and any type of user input devices that allowthe user to edit the graphical representation of the accessed waveform,such as touchscreen, keyboard, keypad, touchpad, trackball, joystick,and mouse. In one embodiment, GUI 310 displays the graphicalrepresentation of the accessed waveform by visually indicatingparameters defining the accessed waveform on touchscreen 320 and allowsthe user to modify one or more parameters of the visually indicatedparameters using touchscreen 320, such as by dragging one or moresegments of the accessed waveform.

In various embodiments, circuits of neurostimulation 100, including itsvarious embodiments discussed in this document, may be implemented usinga combination of hardware and software. For example, the circuit of GUI100, stimulation control circuit 214, and programming control circuit315, including their various embodiments discussed in this document, maybe implemented using an application-specific circuit constructed toperform one or more particular functions or a general-purpose circuitprogrammed to perform such function(s). Such a general-purpose circuitincludes, but is not limited to, a microprocessor or a portion thereof,a microcontroller or portions thereof, and a programmable logic circuitor a portion thereof.

FIG. 4 illustrates an implantable neurostimulation system 400 andportions of an environment in which system 400 may be used. System 400includes an implantable system 422, an external system 402, and atelemetry link 426 providing for wireless communication betweenimplantable system 422 and external system 402. Implantable system 422is illustrated in FIG. 4 as being implanted in the patient's body 499.

Implantable system 422 includes an implantable stimulator (also referredto as an implantable pulse generator, or IPG) 404, a lead system 424,and electrodes 406, which represent an embodiment of stimulation device204, lead system 208, and electrodes 206, respectively. External system402 represents an embodiment of programming device 302. In variousembodiments, external system 402 includes one or more external(non-implantable) devices each allowing the user and/or the patient tocommunicate with implantable system 422. In some embodiments, external402 includes a programming device intended for the user to initializeand adjust settings for implantable stimulator 404 and a remote controldevice intended for use by the patient. For example, the remote controldevice may allow the patient to turn implantable stimulator 404 on andoff and/or adjust certain patient-programmable parameters of theplurality of stimulation parameters.

FIG. 5 illustrates an embodiment of implantable stimulator 404 and oneor more leads 424 of an implantable neurostimulation system, such asimplantable system 422. Implantable stimulator 404 may include a sensingcircuit 530 that is optional and required only when the stimulator has asensing capability, stimulation output circuit 212, a stimulationcontrol circuit 514, an implant storage device 532, an implant telemetrycircuit 534, and a power source 536. Sensing circuit 530, when includedand needed, senses one or more physiological signals for purposes ofpatient monitoring and/or feedback control of the neurostimulation.Examples of the one or more physiological signals includes neural andother signals each indicative of a condition of the patient that istreated by the neurostimulation and/or a response of the patient to thedelivery of the neurostimulation. Stimulation output circuit 212 iselectrically connected to electrodes 406 through lead 424, and deliverseach of the neurostimulation pulses through a set of electrodes selectedfrom electrodes 406. Stimulation control circuit 514 represents anembodiment of stimulation control circuit 214 and controls the deliveryof the neurostimulation pulses using the plurality of stimulationparameters specifying the pattern of the neurostimulation pulses. In oneembodiment, stimulation control circuit 514 controls the delivery of theneurostimulation pulses using the one or more sensed physiologicalsignals. Implant telemetry circuit 534 provides implantable stimulator404 with wireless communication with another device such as a device ofexternal system 402, including receiving values of the plurality ofstimulation parameters from external system 402. Implant storage device532 stores values of the plurality of stimulation parameters. Powersource 536 provides implantable stimulator 404 with energy for itsoperation. In one embodiment, power source 536 includes a battery. Inone embodiment, power source 536 includes a rechargeable battery and abattery charging circuit for charging the rechargeable battery. Implanttelemetry circuit 534 may also function as a power receiver thatreceives power transmitted from external system 402 through an inductivecouple.

In various embodiments, sensing circuit 530 (if included), stimulationoutput circuit 212, stimulation control circuit 514, implant telemetrycircuit 534, implant storage device 532, and power source 536 areencapsulated in a hermetically sealed implantable housing. In variousembodiments, lead(s) 424 are implanted such that electrodes 406 areplaces on and/or around one or more targets to which theneurostimulation pulses are to be delivered, while implantablestimulator 404 is subcutaneously implanted and connected to lead(s) 424at the time of implantation.

FIG. 6 illustrates an embodiment of an external programmer 602 of animplantable neurostimulation system, such as external system 402.External programmer 602 represents an embodiment of programming device302, and includes an external telemetry circuit 640, an external storagedevice 618, a programming control circuit 616, and a GUI 610.

External telemetry circuit 640 provides external programmer 602 withwireless communication with another device such as implantablestimulator 404 via telemetry link 426, including transmitting theplurality of stimulation parameters to implantable stimulator 404. Inone embodiment, external telemetry circuit 640 also transmits power toimplantable stimulator 404 through the inductive couple.

External storage device 618 stores a plurality of individually definablewaveforms each selectable for use as a portion of the pattern of theneurostimulation pulses. In various embodiments, each waveform of theplurality of individually definable waveforms includes one or morepulses of the neurostimulation pulses, and may include one or more otherwaveforms of the plurality of individually definable waveforms. Examplesof the waveforms are discussed below with reference to FIGS. 7 and 8.External storage device 618 also stores a plurality of individuallydefinable fields. Each waveform of the plurality of individuallydefinable waveforms is associated with one or more fields of theplurality of individually definable fields. Each field of the pluralityof individually definable fields is defined by one or more electrodes ofthe plurality of electrodes through which a pulse of theneurostimulation pulses is delivered and a current distribution of thepulse over the one or more electrodes.

Programming control circuit 616 represents an embodiment of programmingcontrol circuit 316 and generates the plurality of stimulationparameters, which is to be transmitted to implantable stimulator 404,based on the pattern of the neurostimulation pulses. The pattern isdefined using one or more waveforms selected from the plurality ofindividually definable waveforms stored in external storage device 618.In various embodiment, programming control circuit 616 checks values ofthe plurality of stimulation parameters against safety rules to limitthese values within constraints of the safety rules. In one embodiment,the safety rules are heuristic rules.

GUI 610 represents an embodiment of GUI 310 and allows the user todefine the pattern of the neurostimulation pulses using the one or morewaveforms selected from the plurality of individually definablewaveforms stored in external storage device 618, add new waveforms tothe stored plurality of individually definable waveforms, and modifywaveforms of the stored plurality of individually definable waveforms.In the illustrated embodiment, GUI 610 includes a touchscreen 620 toallow the user to edit graphical representations of the pattern of theneurostimulation pulses and the waveforms on the screen. In variousembodiments, GUI 610 includes any types of presentation and user inputdevices that are suitable for used by the user to define and modify thepattern of the neurostimulation pulses and the waveforms.

In various embodiments, GUI 610 displays waveform tags each selectablefor adding a new waveform to the plurality of individually definablewaveforms stored in external storage device 618 or for adjusting awaveform of the plurality of individually definable waveforms stored inexternal storage device 618. The waveform tags may each be presented asa button, a tab, or another symbol identifying a waveform. In responseto a waveform tag of the waveform tags being selected, GUI 610 displaysa waveform builder. The waveform builder includes a graphicalrepresentation of a waveform that is adjustable by editing the graphicalrepresentation. The adjustable waveform is the new waveform to be addedor the stored waveform to be adjusted. The editing may include, forexample, modifying, deleting, copying, and repeating a portion of thegraphical representation. In various embodiments, GUI 610 allows theuser to edit the graphical representation of the waveform using textualand/or graphical commands. In various embodiments, GUI 610 allows theuser to edit the graphical representation of the waveform by directlymanipulating the graphical representation, such as on touchscreen 620.In various embodiments, the graphical representation of the waveformvisually indicates parameters defining the waveform, including amplitudeand timing parameters. In one embodiment, all the parameters definingthe waveform are adjustable by the user using GUI 610. In variousembodiments, the parameters defining the waveform include a fieldparameter specifying a field assigned to the waveform. The fieldparameter specifies one or more electrodes and a current distributionover the one or more electrodes.

In various embodiments, GUI 610 displays field tags each selectable foradding a new field to the plurality of individually definable fieldsstored in external storage device 618 or adjusting a field of theplurality of individually definable fields stored in external storagedevice 618. The field tags may each be presented as a button, a tab, orother symbol identifying a field. In response to a field tag of thewaveform tags being selected, GUI 610 displays a field builder. Thefield builder includes a graphical representation of a field that isadjustable by editing the graphical representation. The adjustable fieldis represented by one or more electrodes selected from the plurality ofelectrodes 406 and the current distribution over the selected one ormore electrodes. The adjustable field is the new field to be added orthe stored field to be adjusted. The current distribution may bespecified by a percentage associated with each electrode of the selectedone or more electrodes. In various embodiments, each field of the storedplurality of individually definable fields may be assigned to a waveformof the stored plurality of individually definable waveforms or a portionof that waveform. In various embodiments, visual tags, such as variouscolors and/or text, are applied to associate a field with a waveform ora portion of the waveform to which the field is assigned to.

In various embodiments, GUI 610 allows for export of a waveform of theplurality of individually definable waveforms stored in external storagedevice 618 from external programmer 602. In various embodiments, GUI 610allows for import of a waveform into external programmer 602 to be addedto the plurality of individually definable waveforms stored in externalstorage device 618. In various embodiments, GUI 610 allows for export ofa field of the plurality of individually definable fields stored inexternal storage device 618 from external programmer 602. In variousembodiments, GUI 610 allows for import of a field into externalprogrammer 602 to be added to the plurality of individually definablefields stored in external storage device 618. In one embodiment, suchimport and export are performed via the Internet or cloud, in a forumfor sharing waveforms. Such imports and exports enable the user to sharewaveforms and/or fields with other users in a community of users thatuse the same or similar neurostimulation systems to treat patients.

FIG. 7 is an illustration of an embodiment of waveforms ofneurostimulation organized in a hierarchical structure. The waveformsmay include, for example, the waveform of a pattern of neurostimulationpulses to be delivered to the patient as well as individual waveformsthat are used as building blocks of the pattern of neurostimulationpulses. In one embodiment, waveforms of the plurality of individuallydefinable waveforms stored in external storage device 618 are organizedinto such a hierarchical structure, which includes a plurality of levels(layers). A waveform of each level includes one or more waveforms of oneor more lower levels.

In the illustrated embodiment, the waveforms of the plurality ofindividually definable waveforms stored in external storage device 618are organized into a nested hierarchical structure with N levels, whereN≥2. Level 1 includes one or more waveforms (waveform 1-1, waveform 1-2,. . . waveform 1-J, where J≥1). Level 2 includes one or more waveforms(waveform 2-1, waveform 2-2, . . . waveform 2-K, where K≥1) eachincluding one or more of waveforms selected from Level 1. Level 3includes one or more waveforms (waveform 3-1, waveform 3-2, . . .waveform 3-L, where L≥1) each including one or more of waveformsselected from Level 2. In general, Level N includes one or morewaveforms (waveform N-1, waveform N-2, . . . waveform 2-M, where M≥1)each including one or more of waveforms selected from Level N-1. The oneor more waveforms of Level N-1 may be selected multiple times forinclusion in a waveform of Level N.

In one example, the waveforms of the plurality of individually definablewaveforms stored in external storage device 618 are organized into anested hierarchical structure with three levels (N=3). Level 1 includesone or more basic waveforms. Level 2 includes one or more waveformgroups each including one or more basic waveforms selected from Level 1.Level 3 includes one or more groups of waveform groups each includingone or more waveform groups selected from Level 2. In one embodiment,the pattern of neurostimulation pulses includes one or more waveformsselected from the one or more groups of waveform groups of Level 3. Invarious embodiments, the pattern of neurostimulation pulses may includeany combination of waveforms from any one, two, or three levels asdetermined by the user.

FIG. 8 illustrates a more specific embodiment of the waveforms of FIG.7. In the illustrated embodiment, the waveforms of the plurality ofindividually definable waveforms stored in external storage device 618are organized into a nested hierarchical structure with three levels(N=3).

Level 1 includes one or more pulses (P1, P2, . . . PJ, where J≥1) eachbeing independently defined by a set of pulse parameters. The set ofpulse parameters specify a field of the stored plurality of individuallydefinable fields, amplitude, shape, and timing of each pulse of the oneor more pulses. FIG. 9 illustrates an embodiment of a neurostimulationpulse being a monophasic pulse having an amplitude (A) and a pulse width(PW). The monophasic pulse is used for easy illustration of waveforms ofhigher level, while the one or more pulses of Level 1 may each includeany pulse waveform that is suitable for neurostimulation. In variousembodiments, the neurostimulation pulses may each have a square,rectangular, or other waveforms including those with arbitrary shapes asdefined by the user.

Level 2 includes one or more pulse groups (PG1, PG2, . . . PGK, whereK≥1) each being independently defined by a set of PG parameters. The oneor more PGs each include one or more pulses selected from the one ormore pulses of Level 1. The set of PG parameters specifies the one ormore pulses and the timing of each pulse of the one or more pulses. FIG.10 illustrates an embodiment of a PG. In the illustrated embodiment,timing of each pulse is specified using an inter-pulse interval (IPI),which is the time interval between two adjacent pulses.

Level 3 includes one or more groups of pulse groups (GPG1, GPG2, . . .GPGL, where L≥1) each independently defined by a set of GPG parameters.The one or more GPGs each include one or more PGs selected from the oneor more PGs of Level 2. The set of GPG parameters specifies the one ormore PGs and timing of each PG of the one or more PGs. FIGS. 11A and 11Beach illustrate an embodiment of a GPG. Timing of each PG is specifiedusing an offset, which is the time interval between the beginning ofthat PG and the beginning of the GPG (or the beginning of the first PGin the GPG). In the embodiment illustrated in FIG. 11A, the PGs aredelivered in series from one or more stimulation output channels, withthe offset being set to avoid overlapping of pulses in time. In theembodiment illustrated in FIG. 11B, the PGs may be delivered in parallelfrom a plurality of stimulation output channels, and the offset can beset to as short as zero for a simultaneous delivery of the PGs.

In one embodiment, the pattern of neurostimulation pulses includes oneor more waveforms selected from the one or more GPGs of Level 3. Thatis, the pattern of neurostimulation pulses includes one or more GPGsselected from the stored one or more GPGs, the stored one or more GPSseach includes one or more PGs selected from the stored one or more PGs,and the stored one or more PGs each including one or more pulsesselected from the stored one or more pulses. FIG. 12 illustrates anembodiment of a pattern of stimulation pulses that includes a GPGrepeated periodically with an OFF period during which noneurostimulation pulse is delivered. In various embodiments, the patternof neurostimulation pulses may include any combination of pulses, PGs,and GPGs as determined by the user.

In various embodiments, GUI 610 can operate in a plurality of displaymodes each specifying one or more waveforms of the plurality ofindividually definable waveforms to be displayed. In one embodiment, GUI610 may display a mode input to receive selection of a display mode fromthe user. For example, only a waveform selected by the user is displayedin detail according to one of the display modes, and one or morewaveforms of a level in the hierarchical structure selected by the usermay be displayed in detail according to another one of the displaymodes.

In various embodiments, GUI 610 can be configured to allow for scalingthe amplitude and time dimensions of a PG (where all pulses within thePG are scaled). Scaling of amplitude can be done incrementally, so thatthe user can experience it in an incrementally increasing way. Scalingof time can also be done incrementally. In one embodiment, scaling oftime can be done while holding the pulse shape constant (i.e., onlyinter-pulse intervals are increased/decreased).

In various embodiments, GUI 610 can be configured to allow for saving,loading, exporting, and importing PGs and GPGs. This allows sharing ofuseful waveforms and patterns of the neurostimulation with other usersin a community of users.

In various embodiments, GUI 610 can be configured to allow forprogramming a duty cycle for each level in the hierarchical structure.In various embodiments, GUI 610 can be configured to allow for testingof a given pulse design in a “tonic” mode that allows the user to adjustamplitude and otherwise characterize the pulse. Similarly, GUI 610 canbe configured to support testing of a PG or GPG in a tonic mode. Invarious embodiments, the pulse, PG, or GPG are continuously delivered,without the OFF period.

FIG. 13 illustrates an embodiment of a method 1300 for controllingdelivery of neurostimulation pulses through a plurality of electrodes.In one embodiment, method 1300 is performed using system 100, includingthe various embodiments of its elements as discussed in this document.In various embodiments, programming device 102, programming device 302,and external programmer 602 may each be programmed to perform method1300.

At 1302, a plurality of individually definable waveforms is stored. Invarious embodiments, the stored plurality of individually definablewaveforms is organized into a hierarchical structure including aplurality of levels. Each waveform of each level of the plurality oflevels can include one or more waveforms of one or more lower levels. Invarious embodiments, the stored plurality of individually definablewaveforms may include one or more pulses of the neurostimulation pulses,one or more pulse groups (PGs), and one or more groups of pulse groups(GPGs). The one or more pulses are each defined by a set of pulseparameters. The one or more PGs are each defined by a set of PGparameters specifying the one or more pulses selected from the storedone or more pulses and the timing of each pulse of the specified one ormore pulses. The one or more GPGs are each defined by a set of GPGparameters specifying the one or more PGs selected from the stored oneor more PGs and timing of each PG of the specified one or more PGs. Invarious embodiments, a plurality of individually definable fields isalso stored. The fields are each defined by one or more electrodesselected from the plurality of electrodes and a current distributionover the selected one or more electrodes, and assigned to a pulse of thestored one or more pulses to be delivered through the selected one ormore electrodes.

At 1304, waveform tags are displayed using a GUI. The waveform tags areeach selectable for access to a waveform of the plurality ofindividually definable waveforms. At 1306, a selection of a waveform tagfrom the displayed waveform tags is received from a user such as aphysician or other caregiver. The selected waveform tag is associatedwith the accessed waveform. At 1308, a graphical representation of theaccessed waveform is displayed using the GUI. At 1310, the user isallowed to adjust the accessed waveform by editing the graphicalrepresentation of the accessed waveform using the GUI.

In various embodiments, the waveform tags include one or more waveformaddition tags each selectable for adding a new waveform to the pluralityof individually definable waveforms. By selecting a waveform additiontag, the user is allowed user to create and edit a graphicalrepresentation of the new waveform on the GUI. In various embodiments,the graphical representation of the accessed waveform is displayed, withparameters defining the accessed waveform visually indicated, using theGUI, such as on a touchscreen of the GUI. The user is allowed to adjustone or more parameters of the parameters defining the accessed waveform,such as by using the touchscreen.

In various embodiments, field tags are displayed using the GUI. Thefield tags are each selectable for access to a field of the plurality ofindividually definable fields. A selection of a field tag of thedisplayed field tags is received from the user. The selected field tagis associated with the accessed field. A graphical representation of theaccessed field is displayed using the GUI. The user can adjust theaccessed field by editing the graphical representation of the accessedfield on the GUI.

At 1312, a pattern of neurostimulation pulses is defined by using theGUI. The pattern of neurostimulation pulses includes one or morewaveforms selected from the stored plurality of individually definablewaveforms. At 1314, a plurality of stimulation parameters controllingthe delivery of the neurostimulation pulses is generated according tothe pattern of the neurostimulation pulses. The plurality of stimulationparameters is transmitted to a stimulation device such as an implantablestimulator for controlling the delivery of the neurostimulation pulsesfrom the stimulation device. In various embodiments, values of theplurality of stimulation parameters are checked against constraints ofsafety rules before the plurality of stimulation parameters istransmitted to the stimulation device.

FIG. 14 illustrates an embodiment of a method 1400 for waveformbuilding. In one embodiment, method 1400 is performed using system 100,including the various embodiments of its elements discussed in thisdocument. In various embodiments, programming device 102, programmingdevice 302, and external programmer 602 may each be programmed toperform method 1400. FIGS. 15-23 illustrate examples of a screen, suchas a touchscreen, of the GUI configured for performing method 1400.Examples of the GUI include any GUI discussed in this document,including GUI 110, 310, and 610. For the purpose of illustration, afirst lead 1524A including electrodes E1-E8, a second lead 1524Bincluding electrodes E9-E16, and a case 1507 are shown as part of animplantable system being programmed using the GUI. Case 1507 includes atleast a portion of an implantable housing used as an electrode.Electrode E2 is selected as a cathode to which 100% of the cathodiccurrent is allocated. Electrode E1 is selected as an anode to which 25%of the anodic current has is allocated. Electrode E3 is selected asanother anode to which 75% of the anodic current is allocated. ElectrodeE15 is selected to allow the user to subsequently allocate the polarityand fractionalized electrical current to it. The specific numbers, thefeatures of the GUI, and the system being programmed are shown in 15-23by way of example, and not by way of restriction, for the purpose ofillustrating the functions of the GUIs as discussed in this document.

At 1402, one or more fields are defined. Each field of the one or morefields is defined by one or more electrodes through which a pulse of theneurostimulation pulses is delivered and a current distribution of thepulse over the one or more electrodes. FIG. 15 is an illustration of anembodiment of the screen for building a field. The screen displays fieldtags F1-F5 indicating that 5 fields are stored and a new field tag “+”allowing the user to define a new field and add it to the stored fields.In the example as illustrated, in response to the field tag F2 beingselected, the GUI displays a field builder that includes a graphicalrepresentation of the field F2. The user is allowed to modify electrodeselection and allocation of current to each of the selected electrodes.The GUI provides a command menu providing the user with field editingoptions. Examples of the commands, as illustrated in FIG. 15, include“Copy” (which allows the user to copy a defined field and paste toanother field as a template, for example), “Invert” (which allows theuser to change the polarity of the waveform, i.e., swap the anode(s) andcathode(s)), and “Delete” (which allows the user to delete a definedfield, i.e., remove it from the stored fields).

At 1404, one or more pulses are defined. FIGS. 16 and 17 illustrate anembodiment of the screen for building a pulse. The screen displays pulsetags P1-P3 indicating that 3 pulses are stored and a new pulse tag “+”allowing the user to define a new pulse and add it to the stored pulses.In the example as illustrated in FIGS. 16 and 17, in response to thepulse tag P1 being selected, the GUI displays the field (F2) assigned tothe pulse P1 and the pulse width (PW) of the pulse P1, as shown in FIG.16. The user may select the field and/or the pulse width to makemodification(s) and/or select an advanced pulse editing (“Adv Pulse”)option. In response to the advanced pulse editing option being selected,the GUI displays a graphical representation of the pulse P1, as shown inFIG. 17. The user is then allowed to modify the pulse P1 by editing thegraphical representation, such as by dragging a horizontal segment ofthe displayed waveform to change the amplitude associated with thatsegment and/or a vertical segment of the of the displayed waveform tochange the timing associated with that segment. Under the advanced pulseediting option, the GUI provides a command menu providing the user withpulse editing options. Examples of the commands, as illustrated in FIG.17, include “Open” (which allows the user to open another storedwaveform for use as a template, for example) and “Save” (which allowsthe user to save a newly defined or modified pulse).

At 1406, one or more PGs are defined. FIGS. 18 and 19 illustrate anembodiment of the screen for building a PG. The screen displays PG tagsPG1-PG3 indicating that 3 PGs are stored and a new PG tag “+” allowingthe user to define a new PG and add it to the stored PGs. In the exampleas illustrated in FIGS. 18 and 19, in response to the tag PG3 beingselected, the GUI displays the rate (delivery frequency) assigned to thePG1, as shown in FIG. 18. The user may select the rate to change thefrequency of PG delivery and/or select an advanced PG editing (“AdvPulse Group”) option. In response to the advanced PG editing optionbeing selected, the GUI displays a graphical representation of the PG3,as shown in FIG. 19. The user is then allowed to modify the pulse groupPG3 by editing its graphical representation. In the illustratedembodiment, the PG is defined by specifying pulses, which may berepeated, and inter-pulse intervals between adjacent pulses. Forexample, as illustrated in FIG. 19, the PG being adjusted includes afirst pulse P1 (to which field F1 is assigned) that starts after anoffset of 4.5 seconds, a second pulse P3 (to which field F2 is assigned)that starts after an inter-pulse interval of 400 milliseconds (whichstarts at the end of the first pulse P1, a third pulse P2 (to whichfield F1 is assigned) that starts after an inter-pulse interval of 640milliseconds (which starts at the end of the first pulse P1, and then 10pulses being the pulse P4 (to which field F3 is assigned) is repeated 10times after an inter-pulse interval of 930 milliseconds (which starts atthe end of the third pulse P2. At the end of the 10 repeated pulses P4,a “(+)” sign allows the user to add more pulses and inter-pulseintervals to the pulse group PG3. “Cycle ON(s)” and “Cycle OFF(s)” allowthe user to specify periods during which delivery of the pulses from thePG is turned on (and repeating when necessary) and off, respectively.Under the advanced PG editing option, the GUI provides a command menuproviding the user with PG editing options. Examples of the commands, asillustrated in FIG. 17, include “Open” (which allows the user to openanother stored waveform for use as a template, for example) and “Save”(which allows the user to save a newly defined or modified pulse).

At 1408, one or more GPGs are defined. FIG. 20 illustrates embodiment ofthe screen for building a GPG. The screen displays GPG tags GPG1 andGPG2 indicating that 2 PGs are stored and a new GPG tag “+” allowing theuser to define a new GPG and add it to the stored GPGs. In the exampleas illustrated in FIG. 20, in response to the tag GPG1 being selected,the GUI displays the PGs included in GPG1 (showing PG1 and PG3 beingincluded as an example) and the duty cycle at which GPG1 is to bedelivered. The user may modify the selection of the PGs as well as theON and OFF durations of the duty cycle.

At 1410, a pattern of neurostimulation pulses is defined. In oneembodiment, the pattern includes the GPG1 that includes PG1 and PG3 andis repeatedly delivered at an ON-period of 60 minutes followed by anOFF-period of 360 minutes. In other words, the neurostimulation includesdelivery of GPG1 repeated for an hour on a 7-hour periodic basis. Invarious embodiments, the pattern of neurostimulation pulses can bedefined in any combination of stored GPGs, inter-GPG timing parameters,and therapy session timing parameters. In various other embodiments, thepattern of neurostimulation pulses can be defined in any combination ofstored pulses, PGs, GPGs, and various timing parameters controllingrelative timing of the selected pulses, PGs, and/or GPGs as well astiming of therapy session.

FIGS. 21-23 illustrate various embodiments of a screen of the GUI thatallows for access to pulses, PGs, and GPGs. The screen combines theprogramming functions of the screens illustrated in FIGS. 15-20 butallows the user to access to any of the stored pulses, PGs, and GPGs, aswell as allowing the user to add new pulses, PGs, and GPGs, on onesingle screen.

FIG. 21 illustrates an embodiment of the screen allowing for access topulses, PGs, and GPGs. In the illustrated embodiment, the waveform tags(including pulse tags P1-P7 and new pulse tag “(+)”, PG tag PG1 and newPG tag “(+)”, and GPG tags GPG1-GPG4 and new GPG tag “(+)”) are eachdisplayed as a tab for a folder that opens into a corresponding waveformbuilder. The “Load” command displayed with the pulse builder allows theuser to open another stored pulse for use as a pulse template, forexample, and the “Save” displayed with the pulse builder allows the userto save a newly defined or modified pulse. The “Load” command displayedwith the PG builder allows the user to open another stored PG for use asa pulse template, for example, and the “Save” displayed with the PGbuilder allows the user to save a newly defined or modified PG.

FIGS. 22 and 23 each illustrate another embodiment of the screenallowing for access to pulses, PGs, and GPGs. The screens of FIGS. 22and 23 each include all the functions and visual features illustrated inFIGS. 15-21, with the difference being designs of the layout of thefeatures. In various embodiments, the layout of the features may bedesigned for selection based on the user's visual preference. Severaladditional command buttons are illustrated in FIGS. 22 and 23 as furtherexamples of user commands that may be provided in the GUI. The “Save As”command allows the user to modify a pulse or PG and save (add to thestored waveforms) as a new pulse or PG, respectively. The “Apply” buttonapplies a selected GPG with duty cycle parameters as the pattern ofneurostimulation pulses for programming the stimulation device. The“Test” button allows the stimulation device to deliver only the accessedwaveform (such as a selected pulse or PG) in a “tonic” mode for testingpurposes.

In the illustrated embodiment, the pulse builder allows the user tomodify the pulse waveform by visually editing its graphicalrepresentation. The arrows on the pulse waveform indicate how eachsegment can be modified by dragging. In one embodiment, the entire pulsewaveform may be selected for scaling.

It is to be understood that the above detailed description is intendedto be illustrative, and not restrictive. Other embodiments will beapparent to those of skill in the art upon reading and understanding theabove description. The scope of the invention should, therefore, bedetermined with reference to the appended claims, along with the fullscope of equivalents to which such claims are entitled.

What is claimed is:
 1. A system for controlling delivery ofneurostimulation by a user, the neurostimulation delivered using aplurality of electrodes, the system comprising: a programming controlcircuit configured to generate stimulation parameters for programmingthe neurostimulation device to deliver the neurostimulation according toa pattern of neurostimulation pulses; a storage device configured tostore individually definable waveforms; and a graphical user interface(GUI) coupled to the storage device and the programming control circuit,the GUI configured to: organize the stored individually definablewaveforms into a hierarchical structure including multiple levels andallow each waveform of each level of the multiple levels to include oneor more waveforms of one or more lower levels when the each level isabove the lowest level of the hierarchical structure; allow the user tographically create a new waveform for each level of the hierarchicalstructure to be added to the stored individually definable waveforms byincluding one or more waveforms selected from the stored individuallydefinable waveforms at one or more lower levels of the hierarchicalstructure when the each level is above the lowest level of thehierarchical structure; and allow the user to define the pattern ofneurostimulation pulses by selecting one or more waveforms from thestored individually definable waveforms to be included in the pattern ofthe neurostimulation pulses.
 2. The system of claim 1, wherein the GUIis further configured to allow the user to define the pattern ofneurostimulation pulses by selecting one or more first waveforms fromthe stored individually definable waveforms to be included in thepattern of neurostimulation pulses and selecting one or more secondwaveforms from the one or more first waveforms to be each repeated for aspecified number of times in the pattern of the neurostimulation pulses.3. The system of claim 1, wherein GUI is configured to allow for exportof a waveform of the stored individually definable waveforms from thesystem.
 4. The system of claim 1, wherein GUI is configured to allow forimport of a waveform into the system to be added to the storedindividually definable waveforms.
 5. The system of claim 1, wherein theGUI is configured to allow the user to select a waveform from the storedindividually definable waveforms, to present a graphical representationof the selected waveform, and to allow the user to adjust the selectedwaveform by editing the graphical representation of the selectedwaveform on the GUI.
 6. The system of claim 5, wherein the GUI comprisesa touchscreen and is configured to display the graphical representationof the selected waveform on the touchscreen and to allow the user toedit the graphical representation on the touchscreen, and the GUI isconfigured to display the graphical representation of the selectedwaveform by visually indicating parameters defining the selectedwaveform on the touchscreen and to allow the user to modify one or moreparameters of the visually indicated parameters using the touchscreen.7. The system of claim 1, wherein the GUI is configured to allow theuser to organize the stored individually definable waveforms into anested hierarchical structure including a first level including one ormore basic waveforms, a second level including one or more waveformgroups each including one or more basic waveforms selected from thefirst level, and a third level including one or more groups of waveformgroups each including one or more waveform groups selected from thesecond level.
 8. The system of claim 7, wherein the one or more basicwaveforms each comprise a waveform of a pulse of the neurostimulationpulses.
 9. The system of claim 8, wherein the storage device is furtherconfigured to store individually definable fields each defined by one ormore electrodes of the plurality of electrodes through which the pulseof a basic waveform of the one or more basic waveforms is delivered, andthe GUI is further configured to allow the user to select a field fromthe stored individually definable fields, to display a graphicalrepresentation of the selected field, and to allow the user to adjustthe selected field by editing the graphical representation of theselected field on the GUI.
 10. The system of claim 9, wherein the GUI isfurther configured to allow the user to create a new field to be addedto the stored individually definable fields.
 11. A method for deliveringneurostimulation through a plurality of electrodes, the methodcomprising: storing individually definable waveforms; organizing thestored individually definable waveforms into a hierarchical structureincluding multiple levels, each waveform of each level of the multiplelevels allowed to include one or more waveforms of one or more lowerlevels; allowing a user to graphically create, using a graphical userinterface (GUI), a new waveform for each level of the hierarchicalstructure to be added to the stored individually definable waveforms byincluding one or more waveforms selected from the stored individuallydefinable waveforms at one or more lower levels of the hierarchicalstructure when the each level is above the lowest level of thehierarchical structure; allowing the user to define, using the GUI, apattern of neurostimulation pulses by selecting one or more waveformsfrom the stored individually definable waveforms to be included in thepattern of neurostimulation pulses; and generating stimulationparameters for programming a neurostimulation device to deliver theneurostimulation according to the pattern of neurostimulation pulses.12. The method of claim 11, further comprising allowing the user todefine, using the GUI, the pattern of neurostimulation pulses byselecting one or more first waveforms from the stored individuallydefinable waveforms to be included in the pattern of neurostimulationpulses and selecting one or more second waveforms from the one or morefirst waveforms to be each repeated for a specified number of times inthe pattern of the neurostimulation pulses.
 13. The method of claim 11,further comprising exporting a waveform of the stored individuallydefinable waveforms for sharing with one or more other users.
 14. Themethod of claim 11, further comprising importing a waveform from anotheruser to be added to the stored individually definable waveforms.
 15. Themethod of claim 11, further comprising: allowing the user to select,using the GUI, a waveform from the stored individually definablewaveforms; presenting on the GUI a graphical representation of theselected waveform; allowing the user to adjust the selected waveform byediting the graphical representation of the selected waveform on theGUI.
 16. The method of claim 15, further comprising organizing thestored individually definable waveforms into the hierarchical structureincluding multiple levels including: a first level including one or morepulses of the neurostimulation pulses, the one or more pulses each beingdefined by a set of pulse parameters; a second level including one ormore pulse groups (PGs) each being defined by a set of PG parametersspecifying the one or more pulses selected from the stored one or morepulses and the timing of each pulse of the specified one or more pulses;and a third level including one or more groups of pulse groups (GPGs)each defined by a set of GPG parameters specifying the one or more PGsselected from the stored one or more PGs and timing of each PG of thespecified one or more PGs.
 17. The method of claim 16, furthercomprising: storing individually definable fields each defined by one ormore electrodes selected from the plurality of electrodes and assignedto a pulse of the stored one or more pulses to be delivered through theone or more electrodes; allowing the user to create, using the GUI, anew field to be added to the stored individually definable fields; andallowing the user to select, using the GUI, a field from the storedindividually definable fields and to adjust, using the GUI, the selectedfield.
 18. The method of claim 11, further comprising checking thegenerated stimulation parameters against constraints of safety rulesbefore programming the neurostimulation device.
 19. A non-transitorycomputer-readable storage medium including instructions, which whenexecuted by a system, cause the system to perform a method forcontrolling delivery of neurostimulation, the method comprising: storingindividually definable waveforms; organizing the stored individuallydefinable waveforms into a hierarchical structure including multiplelevels, each waveform of each level of the multiple levels allowed toinclude one or more waveforms of one or more lower levels; allowing auser to graphically create, using a graphical user interface (GUI), anew waveform for each level of the hierarchical structure to be added tothe stored individually definable waveforms by including one or morewaveforms selected from the stored individually definable waveforms atone or more lower levels of the hierarchical structure when the eachlevel is above the lowest level of the hierarchical structure; allowingthe user to define, using the GUI, a pattern of neurostimulation pulsesby selecting one or more waveforms from the stored individuallydefinable waveforms to be included in the pattern of neurostimulationpulses; and generating stimulation parameters for programming aneurostimulation device to deliver the neurostimulation according to thepattern of neurostimulation pulses.
 20. The non-transitorycomputer-readable storage medium of claim 19, wherein the method furthercomprises allowing the user to define, using the GUI, the pattern ofneurostimulation pulses by selecting one or more first waveforms fromthe stored individually definable waveforms to be included in thepattern of neurostimulation pulses and selecting one or more secondwaveforms from the one or more first waveforms to be each repeated for aspecified number of times in the pattern of neurostimulation pulses.